import java.util.*;

class Solution {
    public int maxSum(int[] nums) {
        Map<Integer,List<Integer>> map=new HashMap<>();
        for(int i=0;i< nums.length;i++){
            int t=handle(nums[i]);
            if(!map.containsKey(t)){
                map.put(t,new ArrayList<Integer>(nums[i]));
            }else{
                List<Integer> list=map.get(t);
                list.add(nums[i]);
                map.put(t,list);
            }
        }
        int ans=0;
        for(Map.Entry<Integer,List<Integer>> entry:map.entrySet()){
            List<Integer> list=entry.getValue();
            Collections.sort(list);
            ans=Math.max(ans,list.get(list.size()-1)+list.get(list.size()-2));
        }
        return ans;
    }

    private int handle(int x) {
        int max=0;
        while(x>0){
            max=Math.max(max,x%10);
            x/=10;
        }
        return max;
    }
}